Zelda Classic Coverage Report


Directory: src/
File: src/gui/props.h
Date: 2022-11-28 07:33:34
Exec Total Coverage
Lines: 0 67 0.0%
Functions: 0 2774 0.0%
Branches: 0 232 0.0%

Line Branch Exec Source
1 #ifndef ZCGUI_PROPS_H
2 #define ZCGUI_PROPS_H
3
4 namespace GUI::Props
5 {
6
7 struct Property {};
8
9 // gcc -Weffc++ will complain "'operator=' should return a reference to '*this'"
10 #ifdef __GNUC__
11 #pragma GCC diagnostic push
12 #pragma GCC diagnostic ignored "-Weffc++"
13 #endif
14
15 ZCGUI_DECLARE_PROPERTY(bottomMargin)
16 ZCGUI_DECLARE_PROPERTY(bottomPadding)
17 ZCGUI_DECLARE_PROPERTY(boxPlacement)
18 ZCGUI_DECLARE_PROPERTY(checked)
19 ZCGUI_DECLARE_PROPERTY(columnSpacing)
20 ZCGUI_DECLARE_PROPERTY(onSwitch)
21 ZCGUI_DECLARE_PROPERTY(count)
22 ZCGUI_DECLARE_PROPERTY(bitmap)
23 ZCGUI_DECLARE_PROPERTY(cdata)
24 ZCGUI_DECLARE_PROPERTY(palette)
25 ZCGUI_DECLARE_PROPERTY(data)
26 ZCGUI_DECLARE_PROPERTY(focused)
27 ZCGUI_DECLARE_PROPERTY(hAlign)
28 ZCGUI_DECLARE_PROPERTY(height)
29 ZCGUI_DECLARE_PROPERTY(maxheight)
30 ZCGUI_DECLARE_PROPERTY(minheight)
31 ZCGUI_DECLARE_PROPERTY(hMargins)
32 ZCGUI_DECLARE_PROPERTY(hPadding)
33 ZCGUI_DECLARE_PROPERTY(initializer)
34 ZCGUI_DECLARE_PROPERTY(leftMargin)
35 ZCGUI_DECLARE_PROPERTY(leftPadding)
36 ZCGUI_DECLARE_PROPERTY(margins)
37 ZCGUI_DECLARE_PROPERTY(padding)
38 ZCGUI_DECLARE_PROPERTY(maxLength)
39 ZCGUI_DECLARE_PROPERTY(maxLines)
40 ZCGUI_DECLARE_PROPERTY(onClick)
41 ZCGUI_DECLARE_PROPERTY(onClose)
42 ZCGUI_DECLARE_PROPERTY(onSelectionChanged)
43 ZCGUI_DECLARE_PROPERTY(onValueChanged)
44 ZCGUI_DECLARE_PROPERTY(onEnter)
45 ZCGUI_DECLARE_PROPERTY(onToggle)
46 ZCGUI_DECLARE_PROPERTY(rightMargin)
47 ZCGUI_DECLARE_PROPERTY(rightPadding)
48 ZCGUI_DECLARE_PROPERTY(rowSpacing)
49 ZCGUI_DECLARE_PROPERTY(selectedValue)
50 ZCGUI_DECLARE_PROPERTY_AS(shortcuts, std::initializer_list<KeyboardShortcut>)
51 ZCGUI_DECLARE_PROPERTY(spacing)
52 ZCGUI_DECLARE_PROPERTY(style)
53 ZCGUI_DECLARE_PROPERTY(text)
54 ZCGUI_DECLARE_PROPERTY(title)
55 ZCGUI_DECLARE_PROPERTY(topMargin)
56 ZCGUI_DECLARE_PROPERTY(topPadding)
57 ZCGUI_DECLARE_PROPERTY(type)
58 ZCGUI_DECLARE_PROPERTY(userData)
59 ZCGUI_DECLARE_PROPERTY(vAlign)
60 ZCGUI_DECLARE_PROPERTY(visible)
61 ZCGUI_DECLARE_PROPERTY(vMargins)
62 ZCGUI_DECLARE_PROPERTY(vPadding)
63 ZCGUI_DECLARE_PROPERTY(width)
64 ZCGUI_DECLARE_PROPERTY(maxwidth)
65 ZCGUI_DECLARE_PROPERTY(minwidth)
66 ZCGUI_DECLARE_PROPERTY(val)
67 ZCGUI_DECLARE_PROPERTY(name)
68 ZCGUI_DECLARE_PROPERTY(set)
69 ZCGUI_DECLARE_PROPERTY(indx)
70 ZCGUI_DECLARE_PROPERTY(framed)
71 ZCGUI_DECLARE_PROPERTY(fitParent)
72 ZCGUI_DECLARE_PROPERTY(textAlign)
73 ZCGUI_DECLARE_PROPERTY(disabled)
74 ZCGUI_DECLARE_PROPERTY(onPressFunc)
75 ZCGUI_DECLARE_PROPERTY(low)
76 ZCGUI_DECLARE_PROPERTY(high)
77 ZCGUI_DECLARE_PROPERTY(useFont)
78 ZCGUI_DECLARE_PROPERTY(frameText)
79 ZCGUI_DECLARE_PROPERTY(onValChangedFunc)
80 ZCGUI_DECLARE_PROPERTY(places)
81 ZCGUI_DECLARE_PROPERTY(swap_type)
82 ZCGUI_DECLARE_PROPERTY(onToggleFunc)
83 ZCGUI_DECLARE_PROPERTY(onSelectFunc)
84 ZCGUI_DECLARE_PROPERTY(selectedIndex)
85 ZCGUI_DECLARE_PROPERTY(isABC)
86 ZCGUI_DECLARE_PROPERTY(cset)
87 ZCGUI_DECLARE_PROPERTY(tile)
88 ZCGUI_DECLARE_PROPERTY(use_vsync)
89 ZCGUI_DECLARE_PROPERTY(speed)
90 ZCGUI_DECLARE_PROPERTY(frames)
91 ZCGUI_DECLARE_PROPERTY(delay)
92 ZCGUI_DECLARE_PROPERTY(skipx)
93 ZCGUI_DECLARE_PROPERTY(skipy)
94 ZCGUI_DECLARE_PROPERTY(do_sized)
95 ZCGUI_DECLARE_PROPERTY(flip)
96 ZCGUI_DECLARE_PROPERTY(forceFitW)
97 ZCGUI_DECLARE_PROPERTY(forceFitH)
98 ZCGUI_DECLARE_PROPERTY(rowSpan)
99 ZCGUI_DECLARE_PROPERTY(colSpan)
100 ZCGUI_DECLARE_PROPERTY(info)
101 ZCGUI_DECLARE_PROPERTY(combo)
102 ZCGUI_DECLARE_PROPERTY(showvals)
103 ZCGUI_DECLARE_PROPERTY(color)
104 ZCGUI_DECLARE_PROPERTY(cset2)
105 ZCGUI_DECLARE_PROPERTY(ptr)
106 ZCGUI_DECLARE_PROPERTY(values)
107 ZCGUI_DECLARE_PROPERTY(ddlist)
108 ZCGUI_DECLARE_PROPERTY(onUpdate)
109 ZCGUI_DECLARE_PROPERTY(onTick)
110 ZCGUI_DECLARE_PROPERTY(read_only)
111 ZCGUI_DECLARE_PROPERTY(noHLine)
112 ZCGUI_DECLARE_PROPERTY(showFlip)
113 ZCGUI_DECLARE_PROPERTY(c1)
114 ZCGUI_DECLARE_PROPERTY(c2)
115 ZCGUI_DECLARE_PROPERTY(system)
116 ZCGUI_DECLARE_PROPERTY(tilewid)
117 ZCGUI_DECLARE_PROPERTY(tilehei)
118 ZCGUI_DECLARE_PROPERTY(mini)
119 ZCGUI_DECLARE_PROPERTY(minicorner)
120 ZCGUI_DECLARE_PROPERTY(showT0)
121 ZCGUI_DECLARE_PROPERTY(minionly)
122 ZCGUI_DECLARE_PROPERTY(deftile)
123 ZCGUI_DECLARE_PROPERTY(defcs)
124 ZCGUI_DECLARE_PROPERTY(scrollWidth)
125 ZCGUI_DECLARE_PROPERTY(scrollHeight)
126 ZCGUI_DECLARE_PROPERTY(targHeight)
127
128
129 #ifdef __GNUC__
130 #pragma GCC diagnostic pop
131 #endif
132
133 } // namespace GUI::Props
134
135 namespace GUI::Internal
136 {
137
138 // Clang will complain that definitions of tag types aren't available.
139 #ifdef __clang__
140 #pragma clang diagnostic push
141 #pragma clang diagnostic ignored "-Wundefined-var-template"
142 #endif
143
144 template<typename ArgsSoFar, typename BuilderType>
145 inline void applyArgs(ArgsSoFar, BuilderType&&)
146 {
147 }
148
149 template<typename ArgsSoFar, typename BuilderType, typename WidgetType,
150 typename... MoreArgsType>
151 inline void applyArgs(ArgsSoFar, BuilderType&& builder, std::shared_ptr<WidgetType> child,
152 MoreArgsType&&... moreArgs)
153 {
154 builder.addChildren(child, std::forward<MoreArgsType>(moreArgs)...);
155 }
156
157 template<typename PropsSoFar, typename BuilderType, typename WidgetType>
158 inline void applyArgs(PropsSoFar, BuilderType&& builder, std::shared_ptr<WidgetType> child)
159 {
160 builder.addChildren(child);
161 }
162
163 template<typename PropsSoFar, typename BuilderType, typename PropType>
164 inline void applyArgs(PropsSoFar psf, BuilderType&& builder, PropType&& prop)
165 {
166 using DecayType = typename std::decay_t<PropType>;
167 ZCGUI_STATIC_ASSERT((std::is_base_of_v<Props::Property, DecayType>),
168 "Arguments must be widget properties or widgets.");
169 prop.assertUnique(psf);
170
171 builder.applyProp(std::forward<PropType>(prop), PropType::tag);
172 }
173
174 template<typename PropsSoFar, typename BuilderType, typename PropType, typename... MoreArgsType>
175 inline void applyArgs(PropsSoFar psf, BuilderType&& builder, PropType&& prop,
176 MoreArgsType&&... moreArgs)
177 {
178 using DecayType = typename std::decay_t<PropType>;
179 ZCGUI_STATIC_ASSERT((std::is_base_of_v<Props::Property, DecayType>),
180 "Arguments must be widget properties or widgets." ZCGUI_NEWLINE
181 "This may be a name collision." ZCGUI_NEWLINE
182 "Is there something else with the same name in scope?");
183 prop.assertUnique(psf);
184
185 builder.applyProp(std::forward<PropType>(prop), PropType::tag);
186
187 class PropsApplied: DecayType::TagType {};
188 applyArgs(PropsApplied(), std::forward<BuilderType>(builder),
189 std::forward<MoreArgsType>(moreArgs)...);
190 }
191
192 #ifdef __clang__
193 #pragma clang diagnostic pop
194 #endif
195
196 } // namespace GUI::Internal
197
198 #endif
199